package com.grandt.controller.ventanas;

import java.io.FileNotFoundException;
import java.io.IOException;

import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

import com.grandt.controller.utils.ControllerImportEquipo;
import com.grandt.controller.utils.ControllerImportJugadores;
import com.grandt.model.exceptions.BuscarDatosException;
import com.grandt.model.exceptions.JugadoresCompletoException;
import com.grandt.model.manager.ModelGranDT;
import com.grandt.view.ventanas.GranDTWindowsAboutBox;
import com.grandt.view.ventanas.GranDTWindowsView;
import com.grandt.view.ventanas.internas.JDialogLoguear;
import com.grandt.view.ventanas.internas.JInternalFrameAceptarUsuarioTorneo;
import com.grandt.view.ventanas.internas.JInternalFrameAltaParticipante;
import com.grandt.view.ventanas.internas.JInternalFrameArmarEquipo;
import com.grandt.view.ventanas.internas.JInternalFrameGenerarTablaPosiciones;
import com.grandt.view.ventanas.internas.JInternalFrameInscribirTorneo;
import com.grandt.view.ventanas.internas.JInternalFrameMostrarPuntajeEquipo;
import com.grandt.view.ventanas.internas.JInternalFrameRegistrarPuntajes;
import com.grandt.view.ventanas.internas.JInternalFrameTorneoAmigo;

public class ControllerVentanaPrincipal {

	private ModelGranDT		model;
	private GranDTWindowsView			dialog;
	
	//ventanas
	private JDialog 								aboutBox;	
	private JInternalFrameAceptarUsuarioTorneo		aceptarUsuarioTorneo;
	private JInternalFrameAltaParticipante			altaParticipante;
	private JInternalFrameArmarEquipo				armarEquipo;
	private JInternalFrameGenerarTablaPosiciones	generarTablaPosiciones;
	private JInternalFrameInscribirTorneo			inscribirTorneo;
	private JInternalFrameMostrarPuntajeEquipo		mostrarEquipo;
	private JInternalFrameRegistrarPuntajes			registrarPuntajes;
	private JInternalFrameTorneoAmigo				torneoAmigo;
	private JDialogLoguear							loguear;
	
	public ControllerVentanaPrincipal(ModelGranDT model,GranDTWindowsView dialog) {
		this.model =model;
		this.dialog = dialog;
	}
	public void showAboutBox() {
		if (aboutBox == null) {            
            aboutBox = new GranDTWindowsAboutBox(dialog);
            aboutBox.setLocationRelativeTo(dialog);
        }
        aboutBox.setVisible(true);
		
	}
	public void menuItemImportarJugadores() {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setAcceptAllFileFilterUsed(false);
        fileChooser.setFileFilter(new FileNameExtensionFilter("CSV document (*.csv)", "csv"));
        if(fileChooser.showOpenDialog(dialog)==JFileChooser.APPROVE_OPTION){
            try {
				new ControllerImportJugadores(model).importData(fileChooser.getSelectedFile().getPath());
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (BuscarDatosException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (JugadoresCompletoException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
        }
	}
	public void menuItemImportarEquipos() {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setAcceptAllFileFilterUsed(false);
        fileChooser.setFileFilter(new FileNameExtensionFilter("CSV document (*.csv)", "csv"));
        if(fileChooser.showOpenDialog(dialog)==JFileChooser.APPROVE_OPTION){
        	try {
				new ControllerImportEquipo(model).importData(fileChooser.getSelectedFile().getPath());
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
        }
	}
	public void menuItemMostrarEquipos() {
		if (mostrarEquipo == null) {            
			mostrarEquipo = new JInternalFrameMostrarPuntajeEquipo(model);			
        }		
		dialog.addVentana(mostrarEquipo);		
	}
	public void menuItemGenerarTablasPosiciones() {
		if (generarTablaPosiciones == null) {            
			generarTablaPosiciones = new JInternalFrameGenerarTablaPosiciones(model);			
        }		
		dialog.addVentana(generarTablaPosiciones);		
	}
	public void menuItemRegistrarPuntajes() {
		if (registrarPuntajes == null) {            
			registrarPuntajes = new JInternalFrameRegistrarPuntajes(model);			
        }		
		dialog.addVentana(registrarPuntajes);
		
	}
	public void menuItemAceptarUsuarioTorneo() {
		if (aceptarUsuarioTorneo == null) {            
			aceptarUsuarioTorneo = new JInternalFrameAceptarUsuarioTorneo(model);			
        }		
		dialog.addVentana(aceptarUsuarioTorneo);		
	}
	public void menuItemInscribirUsuarioTorneo() {
		if (inscribirTorneo == null) {            
			inscribirTorneo = new JInternalFrameInscribirTorneo(model);			
        }		
		dialog.addVentana(inscribirTorneo);
		
	}
	public void menuItemAltaTorneo() {
		if (torneoAmigo == null) {            
			torneoAmigo = new JInternalFrameTorneoAmigo(model);			
        }		
		dialog.addVentana(torneoAmigo);
		
	}
	public void menuItemArmarEquipo() {
		if (armarEquipo == null) {            
			armarEquipo = new JInternalFrameArmarEquipo(model);			
        }		
		dialog.addVentana(armarEquipo);
		
	}
	public void menuItemAltaParticipante() {
		if (altaParticipante == null) {            
			altaParticipante = new JInternalFrameAltaParticipante(model);			
        }		
		dialog.addVentana(altaParticipante);
		//altaParticipante.setVisible(true);
		
	}
	public void login() {
		if (loguear == null) {            
			loguear = new JDialogLoguear(dialog,true,model,this);			
        }		
		loguear.setVisible(true);
		
	}
	public void enabledComponent(boolean b) {
		dialog.enabledComponent(b,model.getUsuarioLogueado());
		
	}
	
}
